#include <iostream>
#include <algorithm>
using namespace std;
struct pp
{
int x, y, cnt, graph[10];
} p[15], q[15];
int ans, n, m, i, j, a, b, cnt, graph[10];
int main()
{
cin >> n >> m;
for (i = 1; i <= n; i++)
cin >> p[i].x >> p[i].y;
for (i = 1; i <= m; i++)
cin >> q[i].x >> q[i].y;
for (i = 1; i <= n; i++)
{
for (j = 1; j <= m; j++)
{
if ((p[i].x == q[j].x || p[i].x == q[j].y || p[i].y == q[j].x || p[i].y == q[j].y) && !(p[i].x == q[j].x && p[i].y == q[j].y) && !(p[i].x == q[j].y && p[i].y == q[j].x))
{
ans = (p[i].x == q[j].x || p[i].x == q[j].y) ? p[i].x : p[i].y;
if (graph[ans] == 0)
{
graph[ans] = 1;
cnt++;
}
if (p[i].graph[ans] == 0)
{
p[i].graph[ans] = 1;
p[i].cnt++;
}
if (q[j].graph[ans] == 0)
{
q[j].graph[ans] = 1;
q[j].cnt++;
}
}
}
}
if (cnt == 1)
{
cout << ans << endl;
}
else
{
for (i = 1; i <= n; i++)
{
if (p[i].cnt > 1)
{
cout << "-1" << endl;
return 0;
}
}
for (i = 1; i <= m; i++)
{
if (q[i].cnt > 1)
{
cout << "-1" << endl;
return 0;
}
}
cout << "0" << endl;
}
return 0;
}
771. Jewels and Stones | 1512. Number of Good Pairs |
672. Richest Customer Wealth | 1470. Shuffle the Array |
1431. Kids With the Greatest Number of Candies | 1480. Running Sum of 1d Array |
682. Baseball Game | 496. Next Greater Element I |
232. Implement Queue using Stacks | 844. Backspace String Compare |
20. Valid Parentheses | 746. Min Cost Climbing Stairs |
392. Is Subsequence | 70. Climbing Stairs |
53. Maximum Subarray | 1527A. And Then There Were K |
1689. Partitioning Into Minimum Number Of Deci-Binary Numbers | 318. Maximum Product of Word Lengths |
448. Find All Numbers Disappeared in an Array | 1155. Number of Dice Rolls With Target Sum |
415. Add Strings | 22. Generate Parentheses |
13. Roman to Integer | 2. Add Two Numbers |
515. Find Largest Value in Each Tree Row | 345. Reverse Vowels of a String |
628. Maximum Product of Three Numbers | 1526A - Mean Inequality |
1526B - I Hate 1111 | 1881. Maximum Value after Insertion |